package com.dfy.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.dfy.entity.Spot;
import com.dfy.dto.SpotDTO;
import com.dfy.dto.SpotResponse;
import com.dfy.dto.SpotRequest;
import com.dfy.dto.HomePageResponse;
import com.dfy.dto.SpotDetailResponse;
import java.math.BigDecimal;
import java.util.List;

public interface SpotService extends IService<Spot> {
    // 创建景点
    Spot createSpot(SpotRequest request);
    
    // 更新景点
    SpotDTO updateSpot(Long id, SpotRequest request);
    
    // 获取景点列表
    Page<SpotDTO> getSpotList(
        Integer current,
        Integer size,
        String name,
        String type,
        String categoryType,
        String status,
        String location,
        BigDecimal minPrice,
        BigDecimal maxPrice,
        BigDecimal rating
    );
    
    // 获取首页数据
    HomePageResponse getHomePageData(String keyword, String type, String categoryType);
    
    // 获取用户收藏
    List<SpotResponse> getUserFavorites(Long userId, Integer pageNum, Integer pageSize);
    
    // 添加收藏
    void addFavorite(Long userId, Long spotId);
    
    // 移除收藏
    void removeFavorite(Long userId, Long spotId);
    
    // 删除景点
    void deleteSpot(Long id);
    
    // 获取景点详情
    SpotDetailResponse getSpotDetail(Long id);
    
    Page<SpotDTO> getSpotPage(Page<Spot> page, LambdaQueryWrapper<Spot> wrapper);
} 